package savet.gui.modelos;

import java.util.LinkedList;
import java.util.List;
import javax.swing.table.AbstractTableModel;
import savet.entidades.Empregador;

/**
 *
 * @author Adisson Marinho
 */
public class EmpregadorTableModel extends AbstractTableModel {

    private String[] colunas = {"Nome", "CPF/CNPJ", "CNAE"};
    private List<Empregador> empregadores = new LinkedList<Empregador>();

    public void adicionarEmpregador(Empregador empregador) {
        if (!empregadores.contains(empregador)) {
            int index = empregadores.size();
            empregadores.add(empregador);
            fireTableRowsInserted(index - 1, index);
        }
    }

    public void removerEmpregador(Empregador empregador) {
        int index = empregadores.size();
        boolean remove = empregadores.remove(empregador);
        if (remove) {
            fireTableRowsDeleted(index - 1, index);
        }
    }

    public void removerEmpregador(int index) {
        removerEmpregador(empregadores.get(index));
    }

    public int getRowCount() {
        return empregadores.size();
    }

    @Override
    public String getColumnName(int column) {
        return colunas[column];
    }

    public int getColumnCount() {
        return colunas.length;
    }

    public Object getValueAt(int rowIndex, int columnIndex) {
        Empregador empregador = empregadores.get(rowIndex);
        if (columnIndex == 0) {
            return empregador.getNome();
        } else if (columnIndex == 1) {
            return empregador.getCadastro();
        } else {
            return empregador.getCnae();
        }
    }

    @Override
    public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
        Empregador empregador = empregadores.get(rowIndex);
        if (columnIndex == 0) {
            empregador.setNome(aValue.toString());
        } else {
            empregador.setCadastro(aValue.toString());
        }
    }

    public void setEmpregadores(List<Empregador> empregadores) {
        this.empregadores = empregadores;
    }

    public List<Empregador> getEmpregadores() {
        return empregadores;
    }

    public Empregador getEmpregador(int index) {
        return empregadores.get(index);
    }

    @Override
    public boolean isCellEditable(int rowIndex, int columnIndex) {
        return true;
    }

    public void limpar() {
        int rowCount = getRowCount();
        empregadores = new LinkedList<Empregador>();
        fireTableRowsDeleted(0, rowCount);
    }

    public boolean isEmpty() {
        return empregadores.isEmpty();
    }

}
